/**
 * 
 */
package view;

import java.awt.Color;
import java.awt.Graphics;
import java.util.ArrayList;

import javax.swing.JInternalFrame;

import model.Arbeitspaket;
import model.DBAnbindung;
import model.Projekt;

/**
 * @author egenev
 *
 */
@SuppressWarnings("serial")
public class GANTT extends JInternalFrame {

	private ArrayList<Arbeitspaket> arbeitspakete;
	private Projekt projekt;
	
	public GANTT(String projekt) {
		this.arbeitspakete = DBAnbindung.getInstance().loadArbeitspakete(projekt);
		this.projekt = DBAnbindung.getInstance().loadProjekt(projekt);
		this.closable = true;
		this.iconable = true;
		this.maximizable = true;
		this.resizable = true;
		this.setName("GANTT");
		this.setTitle("GANTT-Diagram");
		
		setSize(400,200);
		
	}
	
	
	public void paint(Graphics g) {
		super.paint(g);
		int einheit = 60;
		int x0 = 10;
		int y0 = 50;
		int starttime = projekt.getStarttermin();
		int endtime = projekt.getEndtermin();
		int totaltime = endtime - starttime;
		int fontH = g.getFontMetrics().getHeight();
		int zeileH = fontH * 2;
		int titelZelleB = 0;
		
		
		/* Titel */
		int zeile = 0;
		for (Arbeitspaket each : arbeitspakete) {
			
			int breite = (int) g.getFontMetrics().getStringBounds(each.getTitel(), g).getWidth() + 10;
			
			g.drawString(each.getTitel(), x0 + 5, y0 + zeile * zeileH + zeileH/2 + fontH/2);
			if (titelZelleB < breite) {
				titelZelleB = breite;
			}
			
			
			zeile++;
		}
		
		
		/* Balken */
		zeile = 0;
		for (Arbeitspaket each : arbeitspakete) {
			int x = x0;
			int y = y0 + zeile * zeileH;
			
			
			for (int[] time : each.getSessions()) {
				int start = time[0] - starttime;
				int end = start + time[1];
				
				g.setColor(Color.GREEN);
				g.fillRect(titelZelleB + x + (start/einheit), y + zeileH/2, (end - start) / einheit, zeileH/2);
			}
			
			
			g.drawRect(x, y, titelZelleB, zeileH);
			zeile++;
		}
		
		
		
		
	}
	
	
}
